Express.js Framework (Express.js ফ্রেমওয়ার্ক)

Computer Programming - নোড জেএস (Node.js)
181

Express.js হলো Node.js এর জন্য একটি জনপ্রিয়, হালকা এবং ন্যূনতম ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক, যা HTTP সার্ভার তৈরি এবং ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। এটি HTTP রিকোয়েস্ট ও রেসপন্স হ্যান্ডল করতে সহজ করে তোলে, এবং এর মাধ্যমে ডেভেলপাররা দ্রুত, স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারে।

Express.js Node.js এর উপর তৈরি এবং এর সহজ ইন্টারফেস ডেভেলপমেন্ট প্রক্রিয়াকে দ্রুত এবং কার্যকরী করে তোলে। এটি রাউটিং, মিডলওয়্যার, HTTP সার্ভার ক্রিয়েশন, টেমপ্লেট রেন্ডারিং, এবং ডেটা প্রসেসিংয়ের জন্য শক্তিশালী ফিচার প্রদান করে।


১. Express.js ইনস্টলেশন

Express.js ব্যবহার শুরু করতে প্রথমে আপনার প্রজেক্টে Express ইনস্টল করতে হবে। NPM (Node Package Manager) ব্যবহার করে এটি ইনস্টল করা হয়।

স্টেপ ১: Node.js প্রজেক্ট তৈরি করা

প্রথমে একটি নতুন Node.js প্রজেক্ট তৈরি করতে হবে:

mkdir my-express-app
cd my-express-app
npm init -y  # package.json তৈরি হবে

স্টেপ ২: Express ইনস্টল করা

Express.js ইনস্টল করতে NPM ব্যবহার করুন:

npm install express --save

২. একটি সাধারণ Express অ্যাপ্লিকেশন তৈরি করা

Express.js দিয়ে একটি সাধারণ HTTP সার্ভার তৈরি করা খুবই সহজ। নিচে একটি সাধারণ Express অ্যাপ্লিকেশন তৈরির উদাহরণ দেওয়া হলো:

// express মডিউল ইম্পোর্ট করা
const express = require('express');
const app = express();

// রুট রাউটিং তৈরি
app.get('/', (req, res) => {
  res.send('Hello, Express!');
});

// সার্ভার চালু
app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে:

  • app.get() মেথড ব্যবহার করে / পাথে একটি GET রিকোয়েস্ট হ্যান্ডল করা হয়েছে।
  • res.send() মেথড ব্যবহার করে ক্লায়েন্টকে "Hello, Express!" পাঠানো হচ্ছে।
  • app.listen() মেথড দিয়ে সার্ভার ৩০০০ পোর্টে লিসেন করছে।

এটি চালানোর পর ব্রাউজারে http://localhost:3000/ এ গিয়ে আপনি "Hello, Express!" দেখতে পাবেন।


৩. Express Routing (রাউটিং)

Express.js রাউটিং ব্যবস্থাকে খুবই সহজ এবং নমনীয়ভাবে পরিচালনা করতে সহায়তা করে। আপনি HTTP মেথড (GET, POST, PUT, DELETE) এবং পাথের মাধ্যমে ডাইনামিক রাউট তৈরি করতে পারেন।

উদাহরণ: বিভিন্ন HTTP মেথডের জন্য রাউটিং

const express = require('express');
const app = express();

// GET রাউট
app.get('/', (req, res) => {
  res.send('GET request received');
});

// POST রাউট
app.post('/submit', (req, res) => {
  res.send('POST request received');
});

// PUT রাউট
app.put('/update', (req, res) => {
  res.send('PUT request received');
});

// DELETE রাউট
app.delete('/delete', (req, res) => {
  res.send('DELETE request received');
});

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, চারটি HTTP মেথডের (GET, POST, PUT, DELETE) জন্য বিভিন্ন রাউট তৈরি করা হয়েছে।


৪. Middleware (মিডলওয়্যার)

Express.js এ মিডলওয়্যার হলো এমন ফাংশন যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে প্রক্রিয়া সম্পাদন করে। এটি সাধারণত রিকোয়েস্ট লগিং, অথেনটিকেশন, ডেটা পার্সিং, এবং রিকোয়েস্ট বৈধকরণে ব্যবহৃত হয়।

উদাহরণ: একটি সাধারণ মিডলওয়্যার

const express = require('express');
const app = express();

// মিডলওয়্যার তৈরি
app.use((req, res, next) => {
  console.log('Request received:', req.method, req.url);
  next();  // রিকোয়েস্ট পরবর্তী রাউট বা মিডলওয়্যার এ পাঠানো
});

app.get('/', (req, res) => {
  res.send('Hello, Express with Middleware!');
});

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, একটি মিডলওয়্যার রিকোয়েস্টের তথ্য (method ও url) কনসোলে প্রিন্ট করবে এবং পরে next() মেথড কল করবে, যার মাধ্যমে রিকোয়েস্ট পরবর্তী রাউট বা মিডলওয়্যার হ্যান্ডল করবে।

Built-in Middleware:

Express.js কিছু বিল্ট-ইন মিডলওয়্যার প্রদান করে যেমন:

  • express.json(): JSON বডি পার্স করতে ব্যবহৃত।
  • express.urlencoded(): URL-encoded ডেটা পার্স করতে ব্যবহৃত।
app.use(express.json());  // JSON ডেটা পার্স করা
app.use(express.urlencoded({ extended: true }));  // URL-encoded ডেটা পার্স করা

৫. Template Engines (টেমপ্লেট ইঞ্জিন)

Express.js এ টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক HTML রেন্ডার করা যায়। কিছু জনপ্রিয় টেমপ্লেট ইঞ্জিনের মধ্যে EJS, Pug, এবং Handlebars রয়েছে।

উদাহরণ: EJS টেমপ্লেট ইঞ্জিন ব্যবহার

  1. প্রথমে EJS ইনস্টল করুন:

    npm install ejs --save
  2. Express অ্যাপ্লিকেশনে EJS ব্যবহার করা:

    const express = require('express');
    const app = express();
    
    app.set('view engine', 'ejs');  // EJS টেমপ্লেট ইঞ্জিন সেট করা
    
    app.get('/', (req, res) => {
      res.render('index', { title: 'Express with EJS', message: 'Hello from EJS!' });
    });
    
    app.listen(3000, () => {
      console.log('Server running at http://localhost:3000/');
    });
  3. views/index.ejs:

    <html>
      <head>
        <title><%= title %></title>
      </head>
      <body>
        <h1><%= message %></h1>
      </body>
    </html>

এখানে, EJS টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক HTML রেন্ডার করা হচ্ছে।


৬. Static Files Serving (স্ট্যাটিক ফাইল সার্ভিং)

Express.js ব্যবহার করে স্ট্যাটিক ফাইল (যেমন, CSS, JavaScript, ইমেজ) সরাসরি সার্ভ করা সম্ভব।

const express = require('express');
const app = express();

// Static files serve করা
app.use(express.static('public'));  // 'public' ফোল্ডার থেকে ফাইল সার্ভ হবে

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, express.static() মেথড ব্যবহার করে স্ট্যাটিক ফাইল সার্ভ করা হচ্ছে।


সারাংশ

Express.js হল একটি শক্তিশালী ও হালকা ফ্রেমওয়ার্ক যা Node.js এর উপরে তৈরি, এবং এটি ওয়েব অ্যাপ্লিকেশন এবং API ডেভেলপমেন্টের জন্য অত্যন্ত উপকারী। Express সহজ রাউটিং, মিডলওয়্যার সাপোর্ট, টেমপ্লেট ইঞ্জিন, এবং স্ট্যাটিক ফাইল সার্ভিং এর মাধ্যমে ডেভেলপমেন্ট প্রক্রিয়া দ্রুত ও কার্যকরী করে তোলে। Express.js দিয়ে আপনি খুব সহজেই স্কেলেবল এবং কার্যকরী ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By

Express.js এর ভূমিকা এবং ইন্সটলেশন

247

Express.js হলো Node.js এর জন্য একটি জনপ্রিয়, হালকা এবং ন্যূনতম ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক, যা HTTP সার্ভার তৈরি এবং ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। এটি HTTP রিকোয়েস্ট ও রেসপন্স হ্যান্ডল করতে সহজ করে তোলে, এবং এর মাধ্যমে ডেভেলপাররা দ্রুত, স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারে।

Express.js Node.js এর উপর তৈরি এবং এর সহজ ইন্টারফেস ডেভেলপমেন্ট প্রক্রিয়াকে দ্রুত এবং কার্যকরী করে তোলে। এটি রাউটিং, মিডলওয়্যার, HTTP সার্ভার ক্রিয়েশন, টেমপ্লেট রেন্ডারিং, এবং ডেটা প্রসেসিংয়ের জন্য শক্তিশালী ফিচার প্রদান করে।


১. Express.js ইনস্টলেশন

Express.js ব্যবহার শুরু করতে প্রথমে আপনার প্রজেক্টে Express ইনস্টল করতে হবে। NPM (Node Package Manager) ব্যবহার করে এটি ইনস্টল করা হয়।

স্টেপ ১: Node.js প্রজেক্ট তৈরি করা

প্রথমে একটি নতুন Node.js প্রজেক্ট তৈরি করতে হবে:

mkdir my-express-app
cd my-express-app
npm init -y  # package.json তৈরি হবে

স্টেপ ২: Express ইনস্টল করা

Express.js ইনস্টল করতে NPM ব্যবহার করুন:

npm install express --save

২. একটি সাধারণ Express অ্যাপ্লিকেশন তৈরি করা

Express.js দিয়ে একটি সাধারণ HTTP সার্ভার তৈরি করা খুবই সহজ। নিচে একটি সাধারণ Express অ্যাপ্লিকেশন তৈরির উদাহরণ দেওয়া হলো:

// express মডিউল ইম্পোর্ট করা
const express = require('express');
const app = express();

// রুট রাউটিং তৈরি
app.get('/', (req, res) => {
  res.send('Hello, Express!');
});

// সার্ভার চালু
app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে:

  • app.get() মেথড ব্যবহার করে / পাথে একটি GET রিকোয়েস্ট হ্যান্ডল করা হয়েছে।
  • res.send() মেথড ব্যবহার করে ক্লায়েন্টকে "Hello, Express!" পাঠানো হচ্ছে।
  • app.listen() মেথড দিয়ে সার্ভার ৩০০০ পোর্টে লিসেন করছে।

এটি চালানোর পর ব্রাউজারে http://localhost:3000/ এ গিয়ে আপনি "Hello, Express!" দেখতে পাবেন।


৩. Express Routing (রাউটিং)

Express.js রাউটিং ব্যবস্থাকে খুবই সহজ এবং নমনীয়ভাবে পরিচালনা করতে সহায়তা করে। আপনি HTTP মেথড (GET, POST, PUT, DELETE) এবং পাথের মাধ্যমে ডাইনামিক রাউট তৈরি করতে পারেন।

উদাহরণ: বিভিন্ন HTTP মেথডের জন্য রাউটিং

const express = require('express');
const app = express();

// GET রাউট
app.get('/', (req, res) => {
  res.send('GET request received');
});

// POST রাউট
app.post('/submit', (req, res) => {
  res.send('POST request received');
});

// PUT রাউট
app.put('/update', (req, res) => {
  res.send('PUT request received');
});

// DELETE রাউট
app.delete('/delete', (req, res) => {
  res.send('DELETE request received');
});

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, চারটি HTTP মেথডের (GET, POST, PUT, DELETE) জন্য বিভিন্ন রাউট তৈরি করা হয়েছে।


৪. Middleware (মিডলওয়্যার)

Express.js এ মিডলওয়্যার হলো এমন ফাংশন যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে প্রক্রিয়া সম্পাদন করে। এটি সাধারণত রিকোয়েস্ট লগিং, অথেনটিকেশন, ডেটা পার্সিং, এবং রিকোয়েস্ট বৈধকরণে ব্যবহৃত হয়।

উদাহরণ: একটি সাধারণ মিডলওয়্যার

const express = require('express');
const app = express();

// মিডলওয়্যার তৈরি
app.use((req, res, next) => {
  console.log('Request received:', req.method, req.url);
  next();  // রিকোয়েস্ট পরবর্তী রাউট বা মিডলওয়্যার এ পাঠানো
});

app.get('/', (req, res) => {
  res.send('Hello, Express with Middleware!');
});

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, একটি মিডলওয়্যার রিকোয়েস্টের তথ্য (method ও url) কনসোলে প্রিন্ট করবে এবং পরে next() মেথড কল করবে, যার মাধ্যমে রিকোয়েস্ট পরবর্তী রাউট বা মিডলওয়্যার হ্যান্ডল করবে।

Built-in Middleware:

Express.js কিছু বিল্ট-ইন মিডলওয়্যার প্রদান করে যেমন:

  • express.json(): JSON বডি পার্স করতে ব্যবহৃত।
  • express.urlencoded(): URL-encoded ডেটা পার্স করতে ব্যবহৃত।
app.use(express.json());  // JSON ডেটা পার্স করা
app.use(express.urlencoded({ extended: true }));  // URL-encoded ডেটা পার্স করা

৫. Template Engines (টেমপ্লেট ইঞ্জিন)

Express.js এ টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক HTML রেন্ডার করা যায়। কিছু জনপ্রিয় টেমপ্লেট ইঞ্জিনের মধ্যে EJS, Pug, এবং Handlebars রয়েছে।

উদাহরণ: EJS টেমপ্লেট ইঞ্জিন ব্যবহার

  1. প্রথমে EJS ইনস্টল করুন:

    npm install ejs --save
  2. Express অ্যাপ্লিকেশনে EJS ব্যবহার করা:

    const express = require('express');
    const app = express();
    
    app.set('view engine', 'ejs');  // EJS টেমপ্লেট ইঞ্জিন সেট করা
    
    app.get('/', (req, res) => {
      res.render('index', { title: 'Express with EJS', message: 'Hello from EJS!' });
    });
    
    app.listen(3000, () => {
      console.log('Server running at http://localhost:3000/');
    });
  3. views/index.ejs:

    <html>
      <head>
        <title><%= title %></title>
      </head>
      <body>
        <h1><%= message %></h1>
      </body>
    </html>

এখানে, EJS টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক HTML রেন্ডার করা হচ্ছে।


৬. Static Files Serving (স্ট্যাটিক ফাইল সার্ভিং)

Express.js ব্যবহার করে স্ট্যাটিক ফাইল (যেমন, CSS, JavaScript, ইমেজ) সরাসরি সার্ভ করা সম্ভব।

const express = require('express');
const app = express();

// Static files serve করা
app.use(express.static('public'));  // 'public' ফোল্ডার থেকে ফাইল সার্ভ হবে

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, express.static() মেথড ব্যবহার করে স্ট্যাটিক ফাইল সার্ভ করা হচ্ছে।


সারাংশ

Express.js হল একটি শক্তিশালী ও হালকা ফ্রেমওয়ার্ক যা Node.js এর উপরে তৈরি, এবং এটি ওয়েব অ্যাপ্লিকেশন এবং API ডেভেলপমেন্টের জন্য অত্যন্ত উপকারী। Express সহজ রাউটিং, মিডলওয়্যার সাপোর্ট, টেমপ্লেট ইঞ্জিন, এবং স্ট্যাটিক ফাইল সার্ভিং এর মাধ্যমে ডেভেলপমেন্ট প্রক্রিয়া দ্রুত ও কার্যকরী করে তোলে। Express.js দিয়ে আপনি খুব সহজেই স্কেলেবল এবং কার্যকরী ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By

Routing এবং Middleware এর ব্যবহার

195

Routing এবং Middleware দুটি গুরুত্বপূর্ণ ধারণা যা Node.js এবং বিশেষভাবে Express.js ফ্রেমওয়ার্কে ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এগুলি সার্ভারের রিকোয়েস্ট ও রেসপন্স হ্যান্ডলিং প্রক্রিয়াকে সহজ এবং কার্যকরী করে তোলে।


১. Routing in Express

Routing হল অ্যাপ্লিকেশনের URL পাথের জন্য নির্দিষ্ট ফাংশন বা হ্যান্ডলারের সাথে একটি রিকোয়েস্ট ম্যাপ করা। Express-এ, আপনি বিভিন্ন HTTP মেথড (যেমন GET, POST, PUT, DELETE) এবং URL পাথের ভিত্তিতে রিকোয়েস্ট হ্যান্ডলার ডিফাইন করতে পারেন।

Express Routing উদাহরণ:

const express = require('express');
const app = express();

// GET রিকোয়েস্ট হ্যান্ডলিং
app.get('/', (req, res) => {
  res.send('Hello, World!');
});

// POST রিকোয়েস্ট হ্যান্ডলিং
app.post('/submit', (req, res) => {
  res.send('Data submitted!');
});

// PUT রিকোয়েস্ট হ্যান্ডলিং
app.put('/update', (req, res) => {
  res.send('Data updated!');
});

// DELETE রিকোয়েস্ট হ্যান্ডলিং
app.delete('/delete', (req, res) => {
  res.send('Data deleted!');
});

// সার্ভার লিসেনিং
app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

এখানে, বিভিন্ন HTTP মেথডের জন্য রিকোয়েস্ট হ্যান্ডলার তৈরি করা হয়েছে। আপনি app.get(), app.post(), app.put(), এবং app.delete() মেথড ব্যবহার করে রুট (URL পাথ) অনুযায়ী রিকোয়েস্ট হ্যান্ডলিং করতে পারেন।


২. Route Parameters

Express-এ আপনি ডাইনামিক পাথ প্যারামিটার ব্যবহার করতে পারেন, যা রুটের অংশ হিসেবে ডেটা গ্রহণ করতে সহায়তা করে।

উদাহরণ:

app.get('/user/:id', (req, res) => {
  let userId = req.params.id; // পাথ প্যারামিটার অ্যাক্সেস করা
  res.send(`User ID is: ${userId}`);
});

এখানে, /user/:id রুটটি একটি ডাইনামিক প্যারামিটার id গ্রহণ করবে এবং সেই অনুযায়ী ডেটা রেসপন্স করবে।

Example:

  • রিকোয়েস্ট: /user/123
  • আউটপুট: User ID is: 123

৩. Middleware in Express

Middleware হলো এমন ফাংশন যা HTTP রিকোয়েস্ট এবং রেসপন্স অবজেক্টের মধ্যবর্তী অংশে চলতে থাকে। Middleware ব্যবহার করে আপনি বিভিন্ন কাজ যেমন রিকোয়েস্ট ভ্যালিডেশন, লগিং, অথেনটিকেশন, রেসপন্স ফিল্টারিং ইত্যাদি করতে পারেন।

Express-এ middleware দুটি ধরনের হতে পারে:

  1. Application-level middleware: এই middleware সমস্ত রিকোয়েস্টের জন্য প্রযোজ্য।
  2. Route-specific middleware: এই middleware শুধুমাত্র নির্দিষ্ট রুটে প্রযোজ্য।

Middleware উদাহরণ:

const express = require('express');
const app = express();

// Application-level Middleware
app.use((req, res, next) => {
  console.log('Middleware 1: Request received');
  next(); // Request কে পরবর্তী middleware বা route handler এ পাঠানো
});

// Route-level Middleware
app.get('/home', (req, res, next) => {
  console.log('Middleware 2: Handling /home route');
  next(); // Request কে পরবর্তী handler এ পাঠানো
}, (req, res) => {
  res.send('Welcome to Home!');
});

// Application-level Middleware for logging request method
app.use((req, res, next) => {
  console.log(`Method: ${req.method} | URL: ${req.url}`);
  next();
});

// সার্ভার লিসেনিং
app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

Output:

  • Middleware 1: Request received
  • Middleware 2: Handling /home route
  • Method: GET | URL: /home

এখানে, প্রথম middleware সমস্ত রিকোয়েস্টের জন্য কার্যকর, এবং দ্বিতীয় middleware শুধুমাত্র /home রুটের জন্য কার্যকর। প্রতিটি middleware ফাংশন next() কলের মাধ্যমে পরবর্তী ফাংশন বা রুট হ্যান্ডলারের দিকে রিকোয়েস্ট পাঠায়।


৪. Error Handling Middleware

Express-এ আপনি একটি error-handling middleware তৈরি করতে পারেন, যা কোনো ত্রুটি (error) হলে ডিফাইন করা হয়।

Error Handling Middleware উদাহরণ:

app.use((req, res, next) => {
  const err = new Error('Something went wrong');
  err.status = 500;
  next(err); // Error কে পরবর্তী error-handling middleware এ পাঠানো
});

app.use((err, req, res, next) => {
  res.status(err.status || 500).send({ error: err.message });
});

এখানে, প্রথম middleware একটি ত্রুটি তৈরি করছে এবং next(err) এর মাধ্যমে এই ত্রুটিকে error-handling middleware এ পাঠাচ্ছে। error-handling middleware ত্রুটির স্ট্যাটাস এবং মেসেজ পাঠায়।


৫. Chaining Middleware

Express-এ একাধিক middleware ফাংশন চেইন আকারে ব্যবহার করা যেতে পারে। প্রতিটি middleware পরবর্তী middleware বা রুট হ্যান্ডলারকে next() কলের মাধ্যমে চালু করতে পারে।

উদাহরণ: Middleware চেইনিং

app.use((req, res, next) => {
  console.log('Middleware 1');
  next(); // পরবর্তী middleware বা route handler এ পাঠানো
});

app.use((req, res, next) => {
  console.log('Middleware 2');
  next(); // পরবর্তী middleware বা route handler এ পাঠানো
});

app.get('/', (req, res) => {
  res.send('Chained Middleware Example');
});

Output:

Middleware 1
Middleware 2

এখানে, দুটি middleware একে অপরকে চেইনিং করে কার্যকর হচ্ছে এবং শেষে রুট হ্যান্ডলার / রিকোয়েস্টের জন্য রেসপন্স পাঠাচ্ছে।


সারাংশ

  • Routing: Express-এ রাউটিং হল URL পাথ অনুযায়ী রিকোয়েস্ট হ্যান্ডল করা। আপনি GET, POST, PUT, DELETE ইত্যাদি HTTP মেথডের সাথে রাউট তৈরি করতে পারেন।
  • Route Parameters: রাউটের মধ্যে ডাইনামিক প্যারামিটার ব্যবহার করে ডেটা গ্রহণ করা যায় (যেমন :id).
  • Middleware: Middleware হল ফাংশন যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে মধ্যবর্তী অংশে কাজ করে, যেমন অথেনটিকেশন, লগিং, ইত্যাদি।
  • Error Handling: Express-এ error-handling middleware ব্যবহার করে সহজেই ত্রুটি পরিচালনা করা যায়।

Express.js এ Routing এবং Middleware ব্যবহার করে আপনি ওয়েব অ্যাপ্লিকেশনকে মডুলার, স্কেলেবেল এবং সুরক্ষিত করে তুলতে পারেন।

Content added By

Template Engines ব্যবহার (Pug, EJS)

151

Template Engines হল এমন টুল যা HTML টেমপ্লেটগুলিকে ডাইনামিকভাবে তৈরি ও রেন্ডার করতে ব্যবহৃত হয়। এটি সাধারণত সার্ভার সাইডে ব্যবহার করা হয় যেখানে ডাটাবেস বা অন্যান্য ডাটা সোর্স থেকে ডাটা নিয়ে তা HTML এ রেন্ডার করা হয়। Pug এবং EJS হল দুটি জনপ্রিয় টেমপ্লেট ইঞ্জিন, যা Node.js অ্যাপ্লিকেশনগুলিতে ডাইনামিক HTML পেজ তৈরি করতে ব্যবহৃত হয়।


১. Pug (পুগ) টেমপ্লেট ইঞ্জিন

Pug (আগে Jade নামে পরিচিত) হল একটি শক্তিশালী এবং হালকা ওজনের টেমপ্লেট ইঞ্জিন যা HTML এর পরিবর্তে ইন্ডেন্টেড সিনট্যাক্স ব্যবহার করে। এটি ডাইনামিক ওয়েব পেজ তৈরি করতে সাহায্য করে এবং কোড আরও পরিষ্কার এবং সংক্ষিপ্ত রাখে।

Pug এর বৈশিষ্ট্য:

  • সিনট্যাক্স সিমপ্লিফাইড: Pug সহজ এবং সংক্ষিপ্ত সিনট্যাক্স ব্যবহার করে।
  • প্রতিটি ট্যাগ ইন্ডেন্টেশন দ্বারা বোঝানো হয়: HTML ট্যাগের সঠিক হায়ারার্কি ইন্ডেন্টেশন দ্বারা তৈরি হয়।
  • ফাংশনালিটি: ডাইনামিক কনটেন্ট এবং ডাটা রেন্ডারিং সহজে সম্ভব।

Pug ইন্সটল এবং কনফিগারেশন:

  1. Pug ইনস্টল করা:
    প্রথমে, Pug ইন্সটল করতে হবে। npm ব্যবহার করে এটি ইনস্টল করা যায়:

    npm install pug
  2. Express এ Pug কনফিগার করা:

    const express = require('express');
    const app = express();
    
    // Pug টেমপ্লেট ইঞ্জিন হিসেবে ব্যবহার করা
    app.set('view engine', 'pug');
    app.set('views', './views');  // Views ডিরেক্টরি নির্দিষ্ট করা
    
    // একটি রাউট তৈরি করা
    app.get('/', (req, res) => {
      res.render('index', { title: 'Pug Example', message: 'Hello World!' });
    });
    
    app.listen(3000, () => {
      console.log('Server started on http://localhost:3000');
    });
  3. Pug টেমপ্লেট ফাইল (views/index.pug):

    doctype html
    html
      head
        title= title
      body
        h1= message

    এখানে, title এবং message ডাইনামিক ডাটা হিসেবে পাস করা হচ্ছে। Pug সিনট্যাক্সে কোনো ক্লোজিং ট্যাগের প্রয়োজন নেই এবং ইন্ডেন্টেশন দিয়ে HTML এর স্ট্রাকচার বুঝানো হয়।


২. EJS (Embedded JavaScript Templates)

EJS (Embedded JavaScript) হল আরেকটি জনপ্রিয় টেমপ্লেট ইঞ্জিন যা HTML টেমপ্লেটের মধ্যে JavaScript কোড এমবেড করে ডাইনামিক কনটেন্ট রেন্ডার করে। EJS সাধারণত HTML টেমপ্লেটের মধ্যে <%= %> সিনট্যাক্স ব্যবহার করে ডাটা প্রবাহ এবং কন্ডিশনাল লজিক হ্যান্ডেল করতে ব্যবহৃত হয়।

EJS এর বৈশিষ্ট্য:

  • HTML টেমপ্লেট সিনট্যাক্স: EJS এ HTML সিনট্যাক্স খুবই পরিচিত এবং সহজ।
  • ডাইনামিক কনটেন্ট: JavaScript কোড ইনলাইন করা যায় এবং ডাইনামিকভাবে HTML তৈরি করা যায়।
  • ইন্টিগ্রেশন: এটি বিভিন্ন ডাটাবেস এবং ডাইনামিক ডাটা সোর্সের সাথে সহজে ইন্টিগ্রেট করা যায়।

EJS ইন্সটল এবং কনফিগারেশন:

  1. EJS ইনস্টল করা:

    npm install ejs
  2. Express এ EJS কনফিগার করা:

    const express = require('express');
    const app = express();
    
    // EJS টেমপ্লেট ইঞ্জিন হিসেবে ব্যবহার করা
    app.set('view engine', 'ejs');
    app.set('views', './views');  // Views ডিরেক্টরি নির্দিষ্ট করা
    
    // একটি রাউট তৈরি করা
    app.get('/', (req, res) => {
      res.render('index', { title: 'EJS Example', message: 'Hello from EJS!' });
    });
    
    app.listen(3000, () => {
      console.log('Server started on http://localhost:3000');
    });
  3. EJS টেমপ্লেট ফাইল (views/index.ejs):

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title><%= title %></title>
    </head>
    <body>
      <h1><%= message %></h1>
    </body>
    </html>

    এখানে, <%= title %> এবং <%= message %> এর মাধ্যমে ডাইনামিক ডাটা টেমপ্লেটে অন্তর্ভুক্ত করা হয়েছে।


৩. Pug এবং EJS এর মধ্যে পার্থক্য

বৈশিষ্ট্যPugEJS
সিনট্যাক্সHTML এর পরিবর্তে ইন্ডেন্টেড সিনট্যাক্সHTML টেমপ্লেট সিনট্যাক্স
অন্যন্য কোড ব্যবহারJavaScript কোড সহ ইন্ডেন্টেশন<%= %> সিনট্যাক্স ব্যবহার
ক্লোজিং ট্যাগপ্রয়োজন নেই (ইন্ডেন্টেশন দিয়ে বোঝানো হয়)HTML ক্লোজিং ট্যাগ ব্যবহৃত হয়
কোডিং স্টাইলআরও কমপ্যাক্ট এবং সহজপরিচিত HTML সিনট্যাক্সে কাজ করা যায়
ইউজার ফ্রেন্ডলিকমপ্যাক্ট সিনট্যাক্স থাকার কারণে নতুনদের জন্য সহজ হতে পারেপরিচিত HTML সিনট্যাক্স ব্যবহার, কিন্তু আরও বেশি কাস্টমাইজেশন সুবিধা রয়েছে

সারাংশ

  • Pug এবং EJS হল দুইটি জনপ্রিয় টেমপ্লেট ইঞ্জিন যা ডাইনামিক HTML পেজ তৈরি করতে ব্যবহৃত হয়। Pug একটি হালকা ওজনের টেমপ্লেট ইঞ্জিন, যা HTML ট্যাগগুলি ইন্ডেন্টেশন দিয়ে বোঝায় এবং কোড আরও ছোট ও পরিষ্কার রাখে। EJS HTML সিনট্যাক্স ব্যবহার করে এবং ইনলাইন JavaScript কোড দিয়ে ডাটা প্রসেসিং করতে সক্ষম।
  • Pug বেশি সিনট্যাক্স সংক্ষেপক এবং পরিচিত HTML সিনট্যাক্স থেকে আলাদা, যখন EJS HTML এর সাথে বেশি প্রথাগতভাবে কাজ করে এবং ইনলাইন কোড ব্যবহারের সুবিধা দেয়।
  • Node.js এর Express ফ্রেমওয়ার্কে উভয়ই ব্যবহৃত হতে পারে, এবং আপনি আপনার প্রয়োজন অনুযায়ী যেকোনো একটি নির্বাচন করতে পারেন।
Content added By

Static Files Serve করা এবং Form Data Handle করা

255

Node.js এবং Express ফ্রেমওয়ার্ক ব্যবহার করে Static Files Serve করা এবং Form Data Handle করা দুটি গুরুত্বপূর্ণ কাজ। এখানে আমরা দেখব কিভাবে স্ট্যাটিক ফাইলগুলো সার্ভ করা হয় এবং কিভাবে HTML ফর্মের ডাটা সার্ভার সাইডে প্রক্রিয়া করা হয়।


১. Static Files Serve করা

Static files হল এমন ফাইল যেগুলি পরিবর্তিত হয় না এবং এগুলি সরাসরি ক্লায়েন্ট ব্রাউজারে পাঠানো হয়। সাধারণত HTML, CSS, JavaScript, ইমেজ ফাইল (PNG, JPG) ইত্যাদি স্ট্যাটিক ফাইল হিসেবে ব্যবহৃত হয়।

Express ব্যবহার করে Static Files Serve করা

Express ফ্রেমওয়ার্ক ব্যবহার করে স্ট্যাটিক ফাইল সার্ভ করা সহজ। আপনি express.static() মেথড ব্যবহার করে স্ট্যাটিক ফাইলের জন্য একটি নির্দিষ্ট ডিরেক্টরি নির্ধারণ করতে পারেন।

Example: Static Files Serve করা

  1. প্রথমে Express ইনস্টল করুন
npm install express
  1. স্ট্যাটিক ফাইল ফোল্ডার তৈরি করুন
/project
    /public
        /css
            style.css
        /images
            logo.png
        /js
            app.js
    app.js
  1. Express অ্যাপ তৈরি করুন
const express = require('express');
const path = require('path');
const app = express();

// Static files সার্ভ করতে public ফোল্ডারটি ব্যবহার করা হচ্ছে
app.use(express.static(path.join(__dirname, 'public')));

// একটি রুট তৈরি করা
app.get('/', (req, res) => {
    res.send('<h1>Welcome to Static File Server!</h1>');
});

// সার্ভার চালু করা
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

এখানে, express.static(path.join(__dirname, 'public')) দিয়ে public ফোল্ডারের মধ্যে থাকা সমস্ত ফাইলকে স্ট্যাটিক ফাইল হিসেবে সার্ভ করা হয়েছে।

ব্রাউজারে স্ট্যাটিক ফাইল অ্যাক্সেস করা

আপনি ব্রাউজারে http://localhost:3000 গিয়ে ওয়েব পেজ দেখতে পারবেন। স্ট্যাটিক ফাইলগুলি যেমন:

  • http://localhost:3000/css/style.css
  • http://localhost:3000/js/app.js
  • http://localhost:3000/images/logo.png

এই ফাইলগুলিকে সরাসরি অ্যাক্সেস করা যাবে।


২. Form Data Handle করা

Node.js এবং Express ব্যবহার করে ফর্ম ডাটা সার্ভার সাইডে প্রক্রিয়া করা যেতে পারে। ফর্ম ডাটা প্রক্রিয়া করতে, body-parser মডিউল ব্যবহার করা হয়, তবে Express 4.16.0 এর পর থেকে express.json() এবং express.urlencoded() বিল্ট-ইন মেথড হিসেবে অন্তর্ভুক্ত করা হয়েছে।

Example: Form Data Handle করা

  1. Express ইনস্টল করুন
npm install express
  1. HTML ফর্ম তৈরি করুন
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Form Example</title>
</head>
<body>
    <h1>Contact Us</h1>
    <form action="/submit" method="POST">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>
        <button type="submit">Submit</button>
    </form>
</body>
</html>

এখানে, একটি সাধারন HTML ফর্ম তৈরি করা হয়েছে যা ব্যবহারকারীর নাম এবং ইমেল গ্রহণ করবে।

  1. Express অ্যাপ তৈরি করুন এবং Form Data Handle করুন
const express = require('express');
const app = express();

// URL-encoded data (form data) এর জন্য middleware ব্যবহার
app.use(express.urlencoded({ extended: true }));

// JSON data এর জন্য middleware ব্যবহার
app.use(express.json());

// ফর্ম রেন্ডার করার রুট
app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');  // index.html ফাইলটি দেখানো হচ্ছে
});

// ফর্ম সাবমিট করার রুট
app.post('/submit', (req, res) => {
    const { name, email } = req.body;  // ফর্ম ডাটাটি req.body থেকে আনা হচ্ছে
    console.log(`Received: Name - ${name}, Email - ${email}`);

    res.send(`<h1>Thank you, ${name}! We have received your email: ${email}</h1>`);
});

// সার্ভার চালু করা
const PORT = 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

Code Explanation:

  1. express.urlencoded({ extended: true }): এই মিডলওয়্যারটি POST ফর্ম ডাটা হ্যান্ডল করতে ব্যবহৃত হয়। extended: true মানে ফর্ম ডাটা একটি object হিসেবে প্রসেস করা হবে।
  2. express.json(): JSON ডাটা হ্যান্ডল করার জন্য ব্যবহৃত হয়।
  3. req.body: ফর্ম ডাটা এখানে req.body থেকে আসে, যেখানে ফর্মের ইনপুট ভ্যালুগুলি থাকে।

Step-by-Step:

  • যখন ব্যবহারকারী ফর্মটি সাবমিট করবে, তখন /submit রুটে ডাটা পাঠানো হবে।
  • এই ডাটাটি req.body এর মাধ্যমে এক্সেস করা হবে এবং কনসোলে প্রিন্ট হবে।
  • শেষে, একটি কাস্টম মেসেজ দেখানো হবে যেখানে ব্যবহারকারীর নাম এবং ইমেল প্রদর্শিত হবে।

ব্রাউজারে Form Data Submit করা:

  • যখন আপনি ফর্মটি পূর্ণ করবেন এবং সাবমিট করবেন, তখন আপনার ডাটা /submit রুটে পাঠানো হবে এবং সার্ভারে এটি প্রসেস হবে।
  • সার্ভার থেকে একটি কাস্টম কনফার্মেশন মেসেজ পাঠানো হবে, যেমন: Thank you, [Name]! We have received your email: [Email].

সারাংশ

  • Static Files Serve করা: Express ব্যবহার করে খুব সহজে স্ট্যাটিক ফাইল সার্ভ করা যায়। express.static() মেথড দিয়ে একটি ফোল্ডার থেকে ফাইল সরাসরি ক্লায়েন্টে পাঠানো যায়।
  • Form Data Handle করা: Express এবং express.urlencoded()express.json() মেথড ব্যবহার করে HTML ফর্মের ডাটা প্রক্রিয়া করা হয় এবং সার্ভারে এই ডাটা প্রক্রিয়া করা যায়।
  • আপনি স্ট্যাটিক ফাইল এবং ফর্ম ডাটা একসাথে ব্যবহার করে একটি পূর্ণাঙ্গ ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন যেখানে ফর্ম সাবমিশন এবং ডাটা রিট্রিভাল করা হয়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...